﻿using MqResearchCSharp.ActiveMq.ActiveMQ;
using MqResearchCSharp.Demo;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Threading;

namespace MqResearchCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            //var activeMq = new ActiveMQ();
            //activeMq.InitClient("Task"); // 这里的Task是队列名字,是和Python服务端通信的队列名字

            var thread = new Thread(StartActiveMq);
            thread.Start();

            //var count = 100;
            //while (count > 1)
            //{
            //    // 这个Demo建立在Python已经训练好模型了,CSharp只是新的样本进行预测,并且得到预测结果
            //    var taskParam = new GradientBoostingRegressorParam()  // 构建入口参数,这边我随机整了点数据,只是测试
            //    {
            //        X_Test = new List<double>()
            //    };
            //    Random rd = new Random();
            //    for (int i = 0; i < 20; i++)
            //    {
            //        taskParam.X_Test.Add(rd.NextDouble());
            //    }

            //    var taskMessage = new TaskMessage("Task");  // 构建一个Task
            //    taskMessage.TaskName = "GradientBoostingRegressorForecast";
            //    taskMessage.TaskParam = JsonConvert.SerializeObject(taskParam);  //Json序列化数据 传递给Python来进行预测
            //    var result = activeMq.RunTask(taskMessage);  //同步执行任务
            //    var y_predict = result.TaskResult;  //预测结果
            //    Console.WriteLine($@"预测结果:{y_predict},耗时:{result.TotalSeconds}s");
            //    count--;
            //}
            Console.WriteLine("....");
            Console.ReadKey();
        }

        public static void StartActiveMq()
        {
            var activeMq = new ActiveMQ();
            activeMq.InitClient("Task"); // 这里的Task是队列名字,是和Python服务端通信的队列名字
            var count = 5;
            while (count > 1)
            {
                Thread.Sleep(200);
                count--;
            }
            Console.WriteLine("线程结束");
            activeMq.Close();
        }
    }
}
